
$(function () {

    let pageNumber = $('.page-number').val();   //一开始默认的条数

    let classOnoff = false;    //用于记录班级数据开关

    //更改页面展示条数




    //渲染数据到页面上
    for(let i = 0; i < pageNumber; i++){
        showData(i);
    }


    //搜索功能实现
    $('.search').click(function () {
        $('.class-data').html('');
        for(let i = 0; i < class_data.length; i++){
            let typeVal = $('#class-type').val().trim();     //用户输入的班级类型
            let teacherVal = $('#class-teacher').val().trim();   //用户输入的主任老师
            let regType = new RegExp( typeVal );     //匹配班级类型关键字
            let regTeacher = new RegExp( teacherVal );     //匹配主任老师关键字
            let cType = class_data[i].class_type;
            let cTeacher = class_data[i].class_teacher;





            if(typeVal && teacherVal){
                //在班级类型、主任老师中都含有关键字
                if(cType.match(regType) && cTeacher.match(regTeacher)){
                    //班级类型、主任老师都能匹配成功

                    showData(i);
                    console.log(1);
                    classOnoff = true;
                }else {
                    if(!classOnoff && i === class_data.length-1){
                        alert('匹配条件失败，请重新输入');
                        return;
                    }
                }
            }else if(typeVal){
                //在班级类型含有关键字,主任老师中未填写
                if(cType.match(regType)){
                    //班级类型匹配成功
                    showData(i);
                    classOnoff = true;
                }else {
                    if(!classOnoff && i === class_data.length-1){
                        alert('匹配条件失败，请重新输入');
                        return;
                    }
                }

            }else if(teacherVal){
                //在班级类型含有关键字,主任老师中未填写
                if(cTeacher.match(regTeacher)){
                    //主任老师匹配成功
                    showData(i);
                    classOnoff = true;
                }else {
                    if(!classOnoff && i === class_data.length-1){
                        alert('匹配条件失败，请重新输入');
                        return;
                    }
                }
            }else{
                showData(i);
                if(i === class_data.length-1){
                    alert('未检测到您输入值，请输入匹配条件');
                    return;
                }


            }


        }
    })





    //td标签展现函数
    function showData(i) {
        let data = JSON.parse(localStorage.getItem('numberAdd'));
        let n = 0 ;
        if(data){
            if(class_data[i].class_teacher === data.teacherName){
                n = data.classNumber;
                console.log(n);
            }
        }




        //根据当前时间显示学生的班级
        let years = classType(class_data[i].class_time);
        if(years === 0 || years === -1){
            class_data[i].class_type = '小班'
        }else if(years === 1){
            class_data[i].class_type = '中班'
        }else if(years === 2){
            class_data[i].class_type = '大班'
        }else {
            class_data[i].class_type = '已毕业'
        }
        let aTr = $('<tr></tr>');

        aTr.html(`<td class="serial-number">${i}</td>
                <td  class="cname">${class_data[i].class_name}</td>
                <td class="ctype">${class_data[i].class_type}</td>
                <td class="main-teacher">${class_data[i].class_teacher}</td>
                <td class="cassister">${class_data[i].class_assistant}</td>
                <td class="number">${n != 0 ? parseInt(class_data[i].class_number) + n :class_data[i].class_number}</td>
                <td class="ctime">${class_data[i].class_time}</td>
                <td class="operate-data">
                    <button class="class-compile" data-target="#classCompile" data-toggle="modal">编辑</button>
                    <button class="class-remove" data-target="#classRemove" data-toggle="modal">删除</button>
                </td>
                `)

        $('.class-data').append(aTr);
    }




    //根据当前时间推测孩子的班级类型
    function classType(times) {
        let yearNum = 0;      //记录学生待的年数
        let curDate = new Date(),
            curYears = curDate.getFullYear(),   //当前年份
            curMonths = curDate.getMonth() + 1  //当前月份
        ;
        let admissionTime = new Date(times),
            admYears = admissionTime.getFullYear(),     //入学年份
            admMonth = admissionTime.getMonth()     //入学月份
        ;

        if((curMonths - admMonth) < 0 ){
            yearNum = curYears - admYears -1;
        }else {
            yearNum = curYears - admYears;
        }

        return yearNum;
    }



    //点击开新班显示空闲的主班老师
    $('.new-class-btn').click(function () {
        //在显示空闲老师时，清空里面的数据
        $('.openClassTeacher').html('');
        $('.openAssisterTeacher').html('');
        //清空之前创建过的班级名称
        $('.openClassName').val('')
        //调用函数，显示数据
        createNewClass('.openClassTeacher','.openAssisterTeacher');
    })



    //验证用户创建新班的表单数据
    $('.confirm').click(function () {


        if($('.chooseNewClass').val() && $('.openClassName').val() && $('.openClassTeacher').val() && $('.openAssisterTeacher').val()){
            $('.class-data').html('');
            //当用户必填项都填写完整时，将新增的班级添加到数据库中
            class_data.push({
                class_id: class_data.length+1,
                class_name: $('.openClassName').val(),
                class_type: $('.chooseNewClass').val(),
                class_time: new Date().getFullYear()+'-09-01',
                class_teacher: $('.openClassTeacher').val(),
                class_assistant: $('.openAssisterTeacher').val(),
                class_number: 0
            })

            //渲染数据到页面上
            for(let i = 0; i < class_data.length; i++){
                showData(i);
            }

            //新增引发总数据条数发生改变
            $('.total-number span').html(class_data.length);



        }else{
            //当用户必填项有任意一项未填
            alert('创建失败，必填项未输入未完整，请重新创建')

        }




    })



    //封装未带班班主任和副班老师
    function createNewClass(t1,t2) {
        let wTeacher = [];     //用于装未带班的老师
        let wAssistant = [];    //用于装带班的副班老师


        for(let i = 0; i < Work_data.length;i++){
            let onoff = true;    //定义主班老师的状态，在未带班是状态为true,一旦带班，状态就为false
            let aonoff = true;    //定义副班老师的状态，在未带班是状态为true,一旦带班，状态就为false

            // 教学部的主班老师
            if(Work_data[i].Work_place === '教学部'){
                for(let j = 0; j < class_data.length; j++){
                    if (Work_data[i].Work_name === class_data[j].class_teacher){
                        onoff = false;
                    }
                }
                if(onoff){
                    wTeacher.push(Work_data[i].Work_name)
                }

            }

            // 学习部的副班老师
            if(Work_data[i].Work_place === '学习部'){
                for(let j = 0; j < class_data.length; j++){
                    if (Work_data[i].Work_name === class_data[j].class_assistant){
                        aonoff = false;
                    }
                }
                if(aonoff){
                    wAssistant.push(Work_data[i].Work_name)
                }
            }
        }

        //将未带班的主班老师渲染到页面上
        for(let i = 0; i < wTeacher.length; i++){
            if(i === 0){
                $(t1).append(`<option selected>${wTeacher[i]}</option>`)
            }else{
                $(t1).append(`<option>${wTeacher[i]}</option>`)
            }

        }
        //将副班老师渲染到页面上
        for(let i = 0; i < wAssistant.length; i++){
            if(i === 0){
                $(t2).append(`<option selected>${wAssistant[i]}</option>`)
            }else{
                $(t2).append(`<option>${wAssistant[i]}</option>`)
            }

        }




    }




    //删除数据
    $('body').on('click','.class-remove',function () {
        let _this = $(this);
        console.log(1);

        //不解绑的话会一直累计点击事件
        $('.confirm-remove').off('click').on('click',function(){
            if(_this.parent().parent().children('.number').html() > 0) {
                alert('抱歉，该班级学生还存在，不可以删除')
            }else{

                $(_this).parent().parent().remove();
                let mainTeacher =_this.parent().parent().children('.main-teacher').html();
                for(let i = 0; i < class_data.length; i++){
                    if(class_data[i].class_teacher === mainTeacher){
                        class_data.splice(i,1);
                        i--;
                    }
                }

                //删除引发总数据条数发生改变
                $('.total-number span').html(class_data.length);
            }

        })
    })




    //编辑功能实现
    $('body').on('click','.class-compile',function () {
        let _this = $(this);
        createNewClass('.class_teacher','.class_assister');
        //将带了班的主班和副班老师也需要渲染到页面上,但由于是已经带班，所以不能点击
        for(let i = 0; i < class_data.length; i++){
            $('.class_teacher').append(`<option disabled>${class_data[i].class_teacher}</option>`);
            $('.class_assister').append(`<option disabled>${class_data[i].class_assistant}</option>`);
        }


        //找到可识别值班主任老师，以班主任老师的名字来遍历数据，从而展示到弹框上
        let teacherName = $(this).parent().parent().children('.main-teacher').html();
        class_data.forEach(function (ele, index) {
            if(ele.class_teacher === teacherName){


                //将一开始的数据显示在弹窗上，供用户查看
                $('.class_id').val(ele.class_id);
                $('.class_name').val(ele.class_name);
                $('.class_type').val(ele.class_type);
                $('.class_teacher').val(ele.class_teacher);
                $('.class_assister').val(ele.class_assistant);
                $('.class_number').val(ele.class_number);
                $('.class_time').val(ele.class_time);


                //用户修改数据后后台数据需要更新且展示的数据也需要更新
                $('.sure-modify').off('click').on('click',function () {
                    ele.class_name = $('.class_name').val();
                    ele.class_type = $('.class_type').val();
                    ele.class_teacher = $('.class_teacher').val();
                    ele.class_assistant = $('.class_assister').val();
                    ele.class_time = $('.class_time').val();


                    _this.parent().parent().children('.cname').html( $('.class_name').val() );
                    _this.parent().parent().children('.ctype').html( $('.class_type').val() );
                    _this.parent().parent().children('.main-teacher').html( $('.class_teacher').val() );
                    _this.parent().parent().children('.cassister').html( $('.class_assister').val() );
                    _this.parent().parent().children('ctime').html( $('.class_time').val() );
                })

            }

        })


    })



    //分页功能实现
    $(function(){
        let lastIndex = 0;  //上一页下一页，第几页的实现
        let sNumber = 0;        //具体页数

        //页面一加载就显示具体的条数
        $('.total-number span').html(class_data.length);


        //当用户选择的显示条数发生改变时
        $('.page-number').on('change',function () {
            pageNumber = $('.page-number').val();   //获取用户选择的条数
            $('.class-data').html('');     //将之前的数据清空


            lastIndex = 0;     //上一页下一页，第几页的实现
            PageNumber();

            //更改页面展示条数
            for(let i = 0; i < Math.min(pageNumber, class_data.length); i++){
                showData(i);
            }

        })


        //封装根据用户选择的条数情况显示应该分多少页
        function PageNumber() {
            //根据用户选择的条数情况显示应该分多少页
            sNumber = parseInt( class_data.length / pageNumber ) + 1;

            let aUl = ''
            for(let i = 0; i < sNumber; i++){
                if(i === 0){
                    aUl += `<li class="active pn"><a href="#">${i+1}</a></li>`
                }else{
                    aUl += `<li class="pn"><a href="#">${i+1}</a></li>`
                }

            }
            $('.choose-number').html(aUl);
        }
        PageNumber()



        //用户点击改变页数时
        $('body').on('click','.pn', function () {

            changePageNumber($(this).index())
        })

        //用户点击调到上一页
        $('body').on('click','.previous',function () {
            let index = lastIndex - 1;
            if( index <= 0 ){
                index = 0;
            }
            changePageNumber(index);
        })

        //用户点击调到下一页
        $('body').on('click','.next',function () {
            let index = lastIndex + 1;
            if( index >= sNumber-1 ){
                index = sNumber-1;
            }
            changePageNumber(index);
        })

        //用户输入数字直接调到某页
        $('body').on('change','.leave-for',function () {
            let index = $('.leave-for').val()-1;
            if(index >= sNumber-1){
                index = sNumber-1;
            }
            if(index <= 0){
                index = 0;
            }
            changePageNumber(index);
        })




        //封装页数改变函数
        function changePageNumber(index) {
            $('.class-data').html('');     //将之前的数据清空
            //将上一个选中样式去掉，新的添加上选中样式
            $('.choose-number li').eq(lastIndex).removeClass('active');
            $('.choose-number li').eq(index).addClass('active');



            for(let i = index*pageNumber; i < Math.min((index+1)*pageNumber, class_data.length); i++){
                showData(i);
            }
            lastIndex = index;

            console.log(pageNumber);
        }



    })



})